package bean;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import dao.DAOBusca;
import dao.PesrsitDAO;
import padroes.singleton.Singleton;
import pojo.Curso;
import pojo.Disciplina;
import pojo.Professor;
import pojo.Turma;

@ManagedBean
@SessionScoped
public class TurmaBean {
	
		
		private Turma turma = new Turma();
		
		private DAOBusca<Turma> daoturma = new DAOBusca<Turma>();
		private DAOBusca<Curso> daoCurso = new DAOBusca<Curso>();
		private DAOBusca<Disciplina> daoDisciplna =  new DAOBusca<Disciplina>();
		private DAOBusca<Professor> daoProfessor = new DAOBusca<Professor>();
		public List<Turma> lista = new ArrayList<Turma>();
		public List<Turma> listaBusca = new ArrayList<Turma>();
		private PesrsitDAO s = Singleton.getInstancia();
		private Long idCurso;
		private Long turmaId;
		private int flag=0;
		

		public List<Turma> getListaBusca() {
			listaBusca = daoturma.buscaTurma(turmaId);
			return listaBusca;
		}
		public int getFlag() {
			return flag;
		}


		public void setFlag(int flag) {
			this.flag = flag;
		}


		private Long idProfessor;
		private Long idDisciplina;
		private String busca = "";
		public String getBusca() {
			return busca;
		}


		public void setBusca(String busca) {
			this.busca = busca;
		}


		public TurmaBean(){
			
		}


		public Turma getTurma() {
			return turma;
		}


		public void setTurma(Turma turma) {
			this.turma = turma;
		}

			
	
		public List<Turma> getLista(){
			lista = daoturma.busca(Turma.class);
			return lista;
		}
		public void salvar(){
			List<Curso> bandas = daoCurso.busca(Curso.class);
			for(Curso c : bandas){
				if(c.getId().equals(idCurso)){
					turma.setCurso(c);
				}
			}
			List<Disciplina> disciplinas = daoDisciplna.busca(Disciplina.class);
			for(Disciplina d : disciplinas){
				if(d.getId().equals(idDisciplina)){
					turma.setDisciplina(d);
				}
			}
			
			List<Professor> professores = daoProfessor.busca(Professor.class);
			for(Professor p : professores){
				if(p.getId().equals(idProfessor)){
					turma.setProfessor(p);
				}
			}
				
			try {
				s.salvar(turma);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			bandas = new ArrayList<Curso>();
			professores = new ArrayList<Professor>();
			disciplinas = new ArrayList<Disciplina>();
			atualizar();
			turma = new Turma();
			
		}
		
		public void buscar(){
			System.out.println("entrou no buscar");
	
			
			System.out.println("TurmaID " + turmaId);
			
			 listaBusca =  daoturma.busca(Turma.class);
			 
			 for(Turma  t : listaBusca){
				 if(t.getId().equals(turmaId)){
					 System.out.println(" " + t.getDescricao() + t.getDisciplina().getNome());
				 }
				 
			 }
			 
			 if(listaBusca.isEmpty()==true){
				 System.out.println("vazio");
				 setFlag(0);
				 FacesContext ctx = FacesContext.getCurrentInstance();  
				ctx.addMessage(null, new FacesMessage("Nenhuma turma foi encontrado na busca"));
			 }
			 else{
				 setFlag(1);
			 }
			 System.out.println("VALOR DA FLAG:"+flag);
		}
		
		


		public Long getTurmaId() {
			return turmaId;
		}
		public void setTurmaId(Long turmaId) {
			this.turmaId = turmaId;
		}
		public void atualizar(){
			lista = daoturma.busca(Turma.class);
		}


		/**
		 * @return the idCurso
		 */
		public Long getIdCurso() {
			return idCurso;
		}


		/**
		 * @param idCurso the idCurso to set
		 */
		public void setIdCurso(Long idCurso) {
			this.idCurso = idCurso;
		}


		/**
		 * @return the idDisciplina
		 */
		public Long getIdDisciplina() {
			return idDisciplina;
		}


		/**
		 * @param idDisciplina the idDisciplina to set
		 */
		public void setIdDisciplina(Long idDisciplina) {
			this.idDisciplina = idDisciplina;
		}


		/**
		 * @return the idProfessor
		 */
		public Long getIdProfessor() {
			return idProfessor;
		}


		/**
		 * @param idProfessor the idProfessor to set
		 */
		public void setIdProfessor(Long idProfessor) {
			this.idProfessor = idProfessor;
		}



}
